package cn.mongodb.repository;


import cn.mongodb.entity.User;
import org.springframework.data.mongodb.repository.MongoRepository;

import java.util.List;

/**
 * 持久层接口定义:
 * 1>自定义接口继承MongoRepository(@Repository可不写)
 * 2>明确指定2个泛型: 泛型1:要操作的实体类,泛型2:要操作的实体ID类型
 * <p>
 * 不需要创建实现类。因为 spring-data-MongoDB 在启动时，会扫描所有实现MongoRepository接口的接口，自动动态代理并创建对象交给容器管理。
 * spring-data-MongoDB 默认实现了JPA规范，所以可以按照JPA规范进行方法名编写。
 * <p>
 * JPA查询规范:
 * 查询方法命名规则:  前缀 + 操作符 + 属性名
 * 前缀:  find / query
 * 操作:  by and or
 * 属性名: 表的列名/对象属性名
 * eg:findByName
 * 但是这种查询操作针对的是简单的属性查询,如果涉及条件查询还是无能为力。如果要做复杂查询,则需要用到MongoTemplate。
 *
 * @author yexi
 */
public interface IUserRepository extends MongoRepository<User, String> {

    List<User> findByName(String name);
}